package com.ruoyi.iot.domain.entity;

import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * 故障统计窗口实体
 */
@Data
@Schema(description = "故障统计窗口实体")
public class DeviceFaultWindow {

    @Schema(description = "主键ID")
    private Long id;

    @Schema(description = "设备编号")
    private String deviceId;

    @Schema(description = "窗口开始时间")
    private LocalDateTime windowStart;

    @Schema(description = "窗口结束时间")
    private LocalDateTime windowEnd;

    @Schema(description = "聚合粒度(分钟)")
    private Integer granularityMinutes;

    @Schema(description = "故障事件次数")
    private Integer faultEventCount;

    @Schema(description = "故障总次数")
    private Integer totalFaultCount;

    @Schema(description = "告警累计次数")
    private Integer alarmTotalCount;

    @Schema(description = "运行定值区无效次数")
    private Integer settingGroupInvalidCount;

    @Schema(description = "定值校验错误次数")
    private Integer settingCheckFaultCount;

    @Schema(description = "开入开出异常次数")
    private Integer ioFaultCount;

    @Schema(description = "采样异常错误次数")
    private Integer samplingFaultCount;

    @Schema(description = "程序校验错误次数")
    private Integer programFaultCount;

    @Schema(description = "监视模块告警次数")
    private Integer monitorModuleAlarmCount;

    @Schema(description = "光强越限告警次数")
    private Integer fiberPowerAlarmCount;

    @Schema(description = "HSB总线异常次数")
    private Integer hsbBusFaultCount;

    @Schema(description = "内部通信异常次数")
    private Integer internalCommFaultCount;

    @Schema(description = "对时信号异常次数")
    private Integer timeSyncFaultCount;

    @Schema(description = "BMI模件异常次数")
    private Integer bmiModuleFaultCount;

    @Schema(description = "TV断线次数")
    private Integer tvFaultCount;

    @Schema(description = "控制回路断线次数")
    private Integer controlCircuitFaultCount;

    @Schema(description = "跳闸失败次数")
    private Integer tripFailCount;

    @Schema(description = "位置不对次数")
    private Integer positionMismatchCount;

    @Schema(description = "过热保护告警次数")
    private Integer overTemperatureAlarmCount;

    @Schema(description = "过负荷告警次数")
    private Integer overLoadAlarmCount;

    @Schema(description = "过压告警次数")
    private Integer overVoltageAlarmCount;

    @Schema(description = "零序电压告警次数")
    private Integer zeroSeqVoltageAlarmCount;

    @Schema(description = "非电量告警1次数")
    private Integer nonElectrical1AlarmCount;

    @Schema(description = "非电量告警2次数")
    private Integer nonElectrical2AlarmCount;

    @Schema(description = "非电量告警3次数")
    private Integer nonElectrical3AlarmCount;

    @Schema(description = "零序过流告警次数")
    private Integer zeroSeqOvercurrentAlarmCount;

    @Schema(description = "控制电源故障次数")
    private Integer controlPowerFailCount;

    @Schema(description = "超温报警次数")
    private Integer overTempWarnCount;

    @Schema(description = "平均维修时长(分钟)")
    private BigDecimal meanRepairTime;

    @Schema(description = "创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
}